FLUSH_EVENTS,
BEFORE_PAINT,
UPDATE,
+ COMPUTE_SIZE,
LAYOUT,
PAINT,
AFTER_PAINT,
NULL, NULL, NULL,
G_TYPE_NONE, 0);
+ /**
+ * GdkFrameClock::compute-size:
+ * @clock: the frame clock emitting the signal
+ *
+ * This signal is used for computing the size of the underlying
+ * #GdkSurface. Applications should generally not handle this signal.
+ */
+ signals[COMPUTE_SIZE] =
+ g_signal_new (g_intern_static_string ("compute-size"),
+ GDK_TYPE_FRAME_CLOCK,
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL, NULL,
+ G_TYPE_NONE, 0);
+
/**
* GdkFrameClock::layout:
* @clock: the frame clock emitting the signal
gdk_profiler_end_mark (before, "frameclock update", NULL);
}
+void
+_gdk_frame_clock_emit_compute_size (GdkFrameClock *frame_clock)
+{
+ gint64 before G_GNUC_UNUSED;
+
+ before = GDK_PROFILER_CURRENT_TIME;
+
+ g_signal_emit (frame_clock, signals[COMPUTE_SIZE], 0);
+
+ gdk_profiler_end_mark (before, "frameclock compute size", NULL);
+}
+
void
_gdk_frame_clock_emit_layout (GdkFrameClock *frame_clock)
{
* @GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS: corresponds to GdkFrameClock::flush-events. Should not be handled by applications.
* @GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT: corresponds to GdkFrameClock::before-paint. Should not be handled by applications.
* @GDK_FRAME_CLOCK_PHASE_UPDATE: corresponds to GdkFrameClock::update.
+ * @GDK_FRAME_CLOCK_PHASE_COMPUTE_SIZE: corresponds to GdkFrameClock::compute-size. Should not be handled by applications.
* @GDK_FRAME_CLOCK_PHASE_LAYOUT: corresponds to GdkFrameClock::layout.
* @GDK_FRAME_CLOCK_PHASE_PAINT: corresponds to GdkFrameClock::paint.
* @GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS: corresponds to GdkFrameClock::resume-events. Should not be handled by applications.
GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS = 1 << 0,
GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT = 1 << 1,
GDK_FRAME_CLOCK_PHASE_UPDATE = 1 << 2,
- GDK_FRAME_CLOCK_PHASE_LAYOUT = 1 << 3,
- GDK_FRAME_CLOCK_PHASE_PAINT = 1 << 4,
- GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS = 1 << 5,
- GDK_FRAME_CLOCK_PHASE_AFTER_PAINT = 1 << 6
+ GDK_FRAME_CLOCK_PHASE_COMPUTE_SIZE = 1 << 3,
+ GDK_FRAME_CLOCK_PHASE_LAYOUT = 1 << 4,
+ GDK_FRAME_CLOCK_PHASE_PAINT = 1 << 5,
+ GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS = 1 << 6,
+ GDK_FRAME_CLOCK_PHASE_AFTER_PAINT = 1 << 7
} GdkFrameClockPhase;
GDK_AVAILABLE_IN_ALL
}
G_GNUC_FALLTHROUGH;
+ case GDK_FRAME_CLOCK_PHASE_COMPUTE_SIZE:
+ if (priv->freeze_count == 0)
+ {
+ priv->phase = GDK_FRAME_CLOCK_PHASE_COMPUTE_SIZE;
+ if ((priv->requested & GDK_FRAME_CLOCK_PHASE_COMPUTE_SIZE) != 0)
+ {
+ priv->requested &= ~GDK_FRAME_CLOCK_PHASE_COMPUTE_SIZE;
+ _gdk_frame_clock_emit_compute_size (clock);
+ }
+ }
+ G_GNUC_FALLTHROUGH;
+
case GDK_FRAME_CLOCK_PHASE_LAYOUT:
if (priv->freeze_count == 0)
{
void _gdk_frame_clock_emit_flush_events (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_before_paint (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_update (GdkFrameClock *frame_clock);
+void _gdk_frame_clock_emit_compute_size (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_layout (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_paint (GdkFrameClock *frame_clock);
void _gdk_frame_clock_emit_after_paint (GdkFrameClock *frame_clock);